const qs = require('querystring');

function getParams(ctx){
    return new Promise((resolve,reject) => {
        let str = '';
        //前端post和put传递的参数，是以文件流的形式传递的，一段段
        ctx.req.on('data',chunk => {
            str += chunk;
        })

        ctx.req.on('end',() => {
            console.log(str)
            console.log(ctx.request.header);
            if(ctx.request.header['content-type'] === 'application/x-www-form-urlencoded'){
                resolve(qs.parse(str));
            }else{
                resolve(JSON.parse(str));
            }
        })
    })
}
module.exports = () => {
    return async (ctx,next) => {
        //post put
        let {method} = ctx.request;
        if(method === 'POST' || method === 'PUT' ){
            console.log("请求方式",method);
            ctx.params = await getParams(ctx);
            await next();
        }else{
            ctx.params = ctx.query;
            await next();
        }
    }
}

//1.get delete  ctx.query  post put 请求  ctx.request.body

//ctx.params

//请求携带的内容类型：1.application/json   2.application/x-www-form-urlencoded  3.application/form-data

//axios 二次封装   两个中间件  element-ui 前后端联调

//作业:1.把成绩管理的功能完善+中间件  //2.加上登录注册的功能   3.抄笔记 两遍

